﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VietTrips.Domain.Helpers;
using VietTrips.Domain.Interfaces;
using VietTrips.Domain.Repositories;

namespace VietTrips.Domain.Services
{
    public partial class StatisticsService
    {
        private readonly IUserRepository _userRepository = new UserRepository();

        public StatisticsService()
        {
            
        }

        public String NumberOfUsers
        {
            get
            {
                // Tính số User hiện tại có trong hệ thống
                return CacheProvider.Get("NumberOfUsers", 
                    DateTime.Now.AddDays(0.25), 
                    () => _userRepository.All.Count().ToString());
            }
        }

        public String NumberOfTours
        {
            get
            {
                // TODO: Tính số Tour hiện tại có trong hệ thống
                return CacheProvider.Get("NumberOfTours",
                    DateTime.Now.AddDays(0.25),
                    () => { return "0"; });
            }
        }

        public String NumberOfTrips
        {
            get
            {
                // TODO: Tính số Trips hiện tại có trong hệ thống
                return CacheProvider.Get("NumberOfTrips",
                    DateTime.Now.AddDays(0.25),
                    () => { return "0"; });
            }
        }

        public String NumberOfAgencies
        {
            get
            {
                // TODO: Tính số Agency hiện tại có trong hệ thống
                return CacheProvider.Get("NumberOfAgencies",
                    DateTime.Now.AddDays(0.25),
                    () => { return "0"; });
            }
        }

        public String NumberOfAgencyRequests
        {
            get
            {
                // TODO: Tính số Request hiện tại có trong hệ thống
                return CacheProvider.Get("NumberOfAgencyRequests",
                    DateTime.Now.AddDays(0.25),
                    () => { return "0"; });
            }
        }
    }
}
